package cn.kent.high.juc.atomic;

import java.util.concurrent.atomic.LongAccumulator;
import java.util.function.LongBinaryOperator;

/**
 * 比longAdder更高级，主要表现在两个方面：用户指定初始值，用户自定义累加规则。
 *
 * - 可以提供非0的初始值，LongAdder只能初始值给0，可以让用户自定义累加规则
 */
public class LongAccumulatorTest {

    public static void main(String[] args) {
        LongAccumulator longAccumulator = new LongAccumulator(new LongBinaryOperator() {
            @Override
            public long applyAsLong(long left, long right) {
                return left+right;
            }
        }, 1);
        longAccumulator.accumulate(10);
        long l = longAccumulator.get();
        System.out.println(l);

    }
}
